<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组的剩余方法</title>
    <script>
        var arr = ["孙悟空","猪八戒","沙和尚"];
        var arr2 = ["白骨精","玉兔精","蜘蛛精"];
        var arr3 = ["二郎神","太上老君","玉皇大帝"];

        /*
            concat()可以连接两个或多个数组,并将新的数组返回
                -该方法不会对原数组产生影响
        */

        var result = arr.concat(arr2,arr3,"牛魔王","铁扇公主");
        console.log(arr);
        console.log(result);

        /*
            join()
                -该方法可以将数组转换为一个字符串
                -该方法不会对原数组产生影响，而是将转换后的字符串作为结果返回
                -在join()中可以指定一个字符串作为参数，这个字符串将会成为数组中元素的连接符
                    如果不指定连接符，则默认使用,作为连接符
        */

        arr = ["孙悟空","猪八戒","沙和尚","唐僧"];
        result = arr.join("--");
        console.log(arr);
        console.log(result);

        /*
            reverse()
                -该方法用来反转数组(前边的去后边，后边的去前边)
                该方法会直接修改原数组
        */

        arr.reverse();
        console.log(arr);

        /*
            sort()
                -可以用来对数组中的元素进行排序
                -也会影响原数组，默认会按照Unicode编码进行排序
        */

        arr = ['b','d','e','a','c'];
        arr.sort();
        console.log(arr);
        arr2 = [11,2,5,4,3,8];
        arr2.sort();
        console.log(arr2);
        /*
            即便对于纯数字的数组，进行sort()排序时，也会按照Unicode编码来排序，
                所以对数字进行排序时，可能会得到错误的结果
            
            我们可以自己来指定排序的规则
                我们可以在sort()中添加一个回调函数，来指定排序规则，
                    回调函数中需要定义两个形参，
                    浏览器将会分别使用数组中的元素作为实参去调用回调函数
                    使用哪个元素调用不确定，但是肯定的是在数组中a一定在b前边
                -浏览器会根据回调函数的返回值来决定元素的顺序
                    如果返回一个大于0的值，则元素会交换位置
                    如果返回一个小于0的值，则元素位置不变
                    如果返回一个0，则认为两个元素相等，也不交换位置
                
                -如果需要升序排列，则返回a-b
                如果需要降序排列，则返回b-a
        */

        arr = [5,4,2,11,3,6,8]
        arr.sort(function(a,b){
            // if(a>b){
            //     return -1;
            // }else if(a<b){
            //     return  1;
            // }else{
            //     return 0;
            // }
            return b-a;
        })
        console.log(arr);
    </script>
</head>
<body>
    
</body>
</html>